/*
 * 版权所有 (c) 2022-2099 TBIT。保留所有权利。
 */

package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.vo.DetentionMachineBoundVO;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 扣押设备绑定 服务类
 * </p>
 *
 * @author chen
 * @since 2023-02-08
 */
public interface DetentionMachineBoundService {


    List<DetentionMachineBoundVO> selectByDetentionId(Integer detentionId, Integer accountId);

    /**
     * 根据扣押区id和区域id查询扣押车辆
     *
     * @param detentionId 扣押区id
     * @param accountId   区域id
     * @param userCode    车辆编号
     */
    List<DetentionMachineBoundVO> queryPage(Integer detentionId, Integer accountId, String userCode);

    /**
     * 根据扣区域id和车辆编号集合搜索扣押车辆
     *
     * @param accountId     区域id
     * @param machineNoList 车辆编号集合
     */
    List<DetentionMachineBoundVO> selectUserCodeList(Integer accountId, List<String> machineNoList);

    /**
     * 根据扣区域id,扣押区id和车辆编号集合搜索扣押车辆
     *
     * @param accountId     区域id
     * @param userCodeList 车辆编号集合
     */
    List<DetentionMachineBoundVO> selectUserCodeList(Integer accountId, Integer detentionId, List<String> userCodeList);

    /**
     * 根据扣押区id,区域id和车辆id移除扣押车辆
     *
     * @param accountId   区域id
     * @param detentionId 扣押区id
     * @param machineId   车辆id
     */
    void deleteByDetentionIdAndMachineId(Integer accountId, Integer detentionId, Integer machineId);

    /**
     * 根据扣押区id和区域id批量添加扣押车辆
     *
     * @param accountId    区域id
     * @param detentionId  扣押区id
     * @param userCodeList 车辆编号集合
     * @param addTime      扣押时间
     */
    int batchAddDetentionMachine(Integer accountId, Integer detentionId, List<String> userCodeList, Date addTime, Integer userId);

    /**
     * 根据扣押区id和区域id批量移除扣押车辆
     *
     * @param accountId    区域id
     * @param detentionId  扣押区id
     * @param userCodeList 车辆编号集合
     */
    int batchDeleteDetentionMachine(Integer accountId, Integer detentionId, List<String> userCodeList);
}
